"""
【迭代器】
迭代器模式(Iterator Pattern)
提供一种方法来访问一个聚合对象中各个元素，而不需暴露该对象的内部表示。这个模式使得我们可以遍历一个聚合对象，而不用关心其内部结构。
"""


class MyList:
    def __init__(self):
        self.data = []

    def add_item(self, item):
        self.data.append(item)

    def __iter__(self):
        return MyListIterator(self)


class MyListIterator:
    def __init__(self, my_list):
        self.my_list = my_list
        self.index = 0

    def __next__(self):
        if self.index >= len(self.my_list.data):
            raise StopIteration
        else:
            item = self.my_list.data[self.index]
            self.index += 1
            return item


my_list = MyList()
my_list.add_item("a")
my_list.add_item("b")
my_list.add_item("c")

for item in my_list:
    print(item)
'''
a
b
c
'''
